package com.ruoyi.controller;

import cn.dev33.satoken.annotation.SaCheckLogin;
import cn.dev33.satoken.annotation.SaIgnore;
import cn.hutool.core.date.DateUtil;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.domain.BoneCheck2;
import com.ruoyi.mapper.BoneCheck2Mapper;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageContentStream;
import org.apache.pdfbox.pdmodel.font.PDType1Font;
import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import wiki.xsx.core.pdf.component.text.XEasyPdfText;
import wiki.xsx.core.pdf.doc.XEasyPdfDefaultFontStyle;
import wiki.xsx.core.pdf.doc.XEasyPdfDocument;
import wiki.xsx.core.pdf.doc.XEasyPdfPage;
import wiki.xsx.core.pdf.handler.XEasyPdfHandler;

import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;


@RestController
@Api(tags = "骨密度报告")
@SaCheckLogin
@RequestMapping(value = "/ray/pdf/")
public class ApiPdfController {


    @Autowired
    BoneCheck2Mapper boneCheck2Mapper;
    @SaIgnore
    @ApiOperation("生成pdf")
    @GetMapping("print")
    public AjaxResult 生成pdf(Integer id){

        BoneCheck2 data = boneCheck2Mapper.selectById(id);
        if(data==null){
           return AjaxResult.error("没有该数据");
        }




        Pdf pdf = new Pdf();
        pdf.init();
        //ray.hospital
        pdf.set医院名称(data.getHospital());

        pdf.set送检科室(data.getReferralDepartment());
        pdf.set送检医生(data.getSubmittingDoctor());
        pdf.set检查医生(data.getInspectDoctor());

        pdf.set检查ID(data.getOrderSn());
        pdf.set姓名(data.getName());
        pdf.set部位(data.getPosition());
        pdf.set病人住址(data.getUserAddr());

        pdf.set检查号(String.valueOf(data.getId()));
        pdf.set性别(data.getSex());
        pdf.set侧别(data.getSide());


        pdf.set生日(data.getBirthday());
        pdf.set身高(data.getHeight() +" cm");
        pdf.setTel(data.getTel());

        pdf.setAge(data.getAge()+"Y");
        pdf.setWeight(data.getWeight()+"kg");

        pdf.set检查日期(DateUtil.format(data.getDate(),"yyyyMMdd"));

        pdf.set骨密度(data.getBmd()+" g/cm^2");
        pdf.set骨峰值(data.getBmdMax()+"g/cm^2");

        pdf.set骨年龄(data.getBmdAge()+" g/cm^2");

        pdf.setT值(String.valueOf(data.getT()));
        pdf.setZ值(String.valueOf(data.getZ()));
        pdf.set骨密度诊断图片("E:\\Code\\JAVA\\RuoYi-Vue\\ruoyi-ray\\src\\main\\resources\\static\\logo1.png");

        pdf.set骨密度曲线图(getBmcChartImg(data.getOrderSn()));

        pdf.set骨密度X图("E:\\ok\\De\\H2.raw.bmp");
        pdf.set骨密度诊断(data.getDcmDiagnosis());
        pdf.set建议(data.getSuggest());


        pdf.close();


        return AjaxResult.success("","/static/pdfprint.pdf");
    }


    public String getBmcChartImg(String fileName){
        System.out.println("fileName = " + fileName);
        BmcChart chart =  new BmcChart();
        chart.init();
        chart.setFileName(fileName);
        chart.save();
        System.out.println("chart.getFilePath()"+chart.getFilePath());
        return chart.getFilePath();
    }


//    @SaIgnore
//    @ApiOperation("生成pdf")
//    @GetMapping("print")
//    public AjaxResult 生成pdf(){
//        Pdf pdf = new Pdf();
//        pdf.init();
//        //ray.hospital
//        pdf.set医院名称("淮安辛宇弘医疗疗");
//
//        pdf.set送检科室("骨质疏松专科科");
//        pdf.set送检医生("张医生生");
//        pdf.set检查医生("王医生");
//
//        pdf.set检查ID("23060002");
//        pdf.set姓名("钱灵飞");
//        pdf.set部位("尺桡远端端");
//        pdf.set病人住址("淮安市淮阴区区");
//
//        pdf.set检查号("1211");
//        pdf.set性别("男男");
//        pdf.set侧别("左");
//
//
//        pdf.set生日("19810812");
//        pdf.set身高("170 cm");
//        pdf.setTel("13334566789");
//
//        pdf.setAge("42Y");
//        pdf.setWeight("70kg");
//
//        pdf.set检查日期("20230617");
//
//        pdf.set骨密度("0.384 g/cm^22");
//        pdf.set骨峰值("0.458 g/cm^22");
//
//        pdf.set骨年龄("0.422 g/cm^2");
//
//        pdf.setT值("-1.29");
//        pdf.setZ值("-0.72");
//        pdf.set骨密度诊断("骨密度诊断");
//        pdf.set建议("1补充钙片类1补充钙片类3补充钙片类4补充钙片类5补充钙片类6补充钙片类7补充钙片类8补充钙片类9补充钙片类0补充钙片类");
//
//        pdf.close();
//
//
////        // 定义pdf输出路径
////                String sourcePath = "E:\\Code\\JAVA\\RuoYi-Vue\\ruoyi-ray\\src\\main\\resources\\static\\pdfdemo.pdf";
////        // 定义pdf输出路径
////                String outputPath = "E:\\Code\\JAVA\\RuoYi-Vue\\output.pdf";
////        // 读取文档
////                XEasyPdfDocument document = XEasyPdfHandler.Document.load(sourcePath);
////        // 获取页面
////                XEasyPdfPage page = document.getPageList().get(0);
////        // 创建文本组件
////                XEasyPdfText text = XEasyPdfHandler.Text.build("骨质疏松专科")
////                            .setFontColor(new Color(0, 0, 255))//设置颜色
////                            .setDefaultFontStyle(XEasyPdfDefaultFontStyle.LIGHT)// 使用细体字
////                            .setFontSize(10.9F)//设置字体大小
////                            .setCharacterSpacing(1F)
////                            .setMarginTop(105F)//设置距离顶部
////                            .setMarginLeft(119F);//设置边距
////
////        // 将组件添加到页面
////                page.addComponent(text);
////        // 保存文档并关闭
////                document.save(outputPath).close();
//        return AjaxResult.success("output.pdf");
//    }





}
